package com.heima.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.user.dtos.FollowDto;
import com.heima.model.user.dtos.LoginDto;
import com.heima.model.user.dtos.LoginFormDTO;
import com.heima.model.user.pojos.ApUser;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.io.IOException;

public interface ApUserService extends IService<ApUser> {
    /**
     * app端登录功能
     * @param dto
     * @return
     */
    public ResponseResult login(LoginDto dto);

    /**
     * 获取用户个人信息
     * @param userId
     * @return
     */
    public ResponseResult getUserInfo(Integer userId);
    /**
     * 获取用户粉丝列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return
     */
    public ResponseResult getUserFansList(Integer userId, Integer page, Integer size);

    /**
     * 获取用户关注列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return
     */
    public ResponseResult getUserFollowList(Integer userId, Integer page, Integer size);
    /**
     * 判断当前用户是否已关注目标用户
     * @param userId 当前用户ID
     * @param followId 目标用户ID
     * @return
     */
    public ResponseResult isFollowedByUser(Integer userId, Integer followId);

    /**
     * 关注或取消关注用户
     * @param userId 当前用户ID
     * @param followDto 关注信息
     * @return
     */
    public ResponseResult followUser(Integer userId, FollowDto followDto);

    /**
     * 判断目标用户是否关注了当前用户（是否互相关注）
     * @param userId 当前用户ID
     * @param fanId 目标用户ID
     * @return
     */
    public ResponseResult isFollowMe(Integer userId, Integer fanId);
    // 在 ApUserService.java 中添加
    /**
     * 用户头像上传
     * @param multipartFile 头像文件
     * @param userId 用户ID
     * @return
     */
    public ResponseResult uploadAvatar(MultipartFile multipartFile, Integer userId) throws IOException;
    /**
     * 发送验证码
     * @param phone 手机号
     * @param session HttpSession
     * @return
     */
    public ResponseResult sendCode(String phone, HttpSession session);
    /**
     * 手机验证码登录
     * @param loginForm 登录信息
     * @param session HttpSession
     * @return
     */
    public ResponseResult codeLogin(LoginFormDTO loginForm, HttpSession session);


    /**
     * 获取用户收藏文章列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return
     */
    public ResponseResult getUserCollections(Integer userId, Integer page, Integer size);

    /**
     * 获取用户点赞文章列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return
     */
    ResponseResult getUserLikedArticles(Integer userId, Integer page, Integer size);

    /**
     * 点赞或取消点赞文章
     * @param userId 用户ID
     * @param articleId 文章ID
     * @param isLike 是否点赞 true-点赞 false-取消点赞
     * @return
     */
    ResponseResult likeArticle(Integer userId, Long articleId, Boolean isLike);

    /**
     * 判断文章是否被点赞
     * @param userId 用户ID
     * @param articleId 文章ID
     * @return
     */
    ResponseResult isArticleLiked(Integer userId, Long articleId);



}